<?php
/**
 * controlador de pendiente control interno
 * @author natanael
 * 
 */
class Cipendiente extends Controller{

     public function __construct()
     {
       parent::Controller();
       $this->load->library(array('chcalendario','email'));
       $this->load->model(array('mcompania','mestatus','metapas','mjurisdiccion','mresponsable','mservicios',
		                        'provincias','usuarios','mprocesos','mmodeloservicios','mmodeloetapas',
                                'mciestatus','mcigestion','enestatus','smssetupci'));
     }
     
     public function index()
     {
        $this->load->view('main', array('content_page' => 'cipendiente_list','menutop' => 0));
     }
     
     public function ginterno($id)
     {
        $objetos = $this->mcompania->LoadCompaniaById($id);
        $servicio = $this->mservicios->LoadServicioById($objetos->getIdServicio());
          
        $lastProsseso = $this->mprocesos->loadLastProceso($id);
        $lastProsseso = $this->mprocesos->loadProcesoById($lastProsseso);
       
        $dias = $this->chcalendario->calcularDias($lastProsseso->getFechaSys());
        
        $usuario = $this->usuarios->LoadUsuarioById($lastProsseso->getIdUsuario());
        $reponsable = $this->mresponsable->LoadEstatusById($usuario->getIdResponsable());
        
        $estatus = $this->mciestatus->loadEstatus();
        
	    $this->load->view('main', array(
	                                    'content_page'        => 'ginterno_add',
	                                    'menutop'             => 0, 
	                                    'datos'               => $objetos, 
	                                    'servicio'            => $servicio->getNombreServicio(), 
	                                    'prosseso'            => $dias,
	                                    'usuario'             => $usuario->getUsernameUsuario(),
	                                    'reponsable'          => $reponsable->getNombre(),
	                                    'estatus'             => $estatus,
	                                    'idCompania'          => $id,
	                                    'idEtapa'             => $lastProsseso->getIdEtapa()));
     }
     
     public function ginternoDestalles($id)
     {
        $objetos = $this->mcompania->LoadCompaniaById($id);
        $servicio = $this->mservicios->LoadServicioById($objetos->getIdServicio());
          
        $lastProsseso = $this->mprocesos->loadLastProceso($id);
        $lastProsseso = $this->mprocesos->loadProcesoById($lastProsseso);
       
        $dias = $this->chcalendario->calcularDias($lastProsseso->getFechaSys());
        
        $usuario = $this->usuarios->LoadUsuarioById($lastProsseso->getIdUsuario());
        $reponsable = $this->mresponsable->LoadEstatusById($usuario->getIdResponsable());
        
        $estatus = $this->mciestatus->loadEstatus();
        
	    $this->load->view('main', array(
	                                    'content_page'        => 'ginterno_det',
	                                    'menutop'             => 0, 
	                                    'datos'               => $objetos, 
	                                    'servicio'            => $servicio->getNombreServicio(), 
	                                    'prosseso'            => $dias,
	                                    'usuario'             => $usuario->getUsernameUsuario(),
	                                    'reponsable'          => $reponsable->getNombre(),
	                                    'estatus'             => $estatus,
	                                    'idCompania'          => $id,
	                                    'idEtapa'             => $lastProsseso->getIdEtapa()));
     }
     
     
    public function ginternoEdit()
     {
     	
     	$id = $this->session->userdata('COMPANIA');
        $objetos = $this->mcompania->LoadCompaniaById($id);
        $servicio = $this->mservicios->LoadServicioById($objetos->getIdServicio());
          
        $lastProsseso = $this->mprocesos->loadLastProceso($id);
        $lastProsseso = $this->mprocesos->loadProcesoById($lastProsseso);
       
        $dias = $this->chcalendario->calcularDias($lastProsseso->getFechaSys());
        
        $usuario = $this->usuarios->LoadUsuarioById($lastProsseso->getIdUsuario());
        $reponsable = $this->mresponsable->LoadEstatusById($usuario->getIdResponsable());
        
        $estatus = $this->mciestatus->loadEstatus();
        
        $etapaG = $this->metapas->LoadEtapaById($lastProsseso->getIdEtapa()); 
        
        $registroG = $this->mcigestion->LoadGestionById($id);
        
	    $this->load->view('main', array(
	                                    'content_page'        => 'ginterno_edit',
	                                    'menutop'             => 0, 
	                                    'datos'               => $objetos, 
	                                    'servicio'            => $servicio->getNombreServicio(), 
	                                    'prosseso'            => $dias,
	                                    'usuario'             => $usuario->getUsernameUsuario(),
	                                    'reponsable'          => $reponsable,
	                                    'estatus'             => $estatus,
	                                    'idCompania'          => $id,
	                                    'idEtapa'             => $etapaG,
	                                    'objecto'             => $registroG,
	                                    'etapas'              => $this->metapas->LoadEtapas(),
	                                    'estatusC'            => $this->enestatus->loadDataEstatus()));
     }
     
     public function data($dataFiltro = false)
     {
       	$page = $this->input->post('page') ? $this->input->post('page') : 1;
		$sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'IdCompania';
		$sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'asc';
		$limit = $this->input->post('rows') ? $this->input->post('rows') : 200;
		
		$start = $limit * $page - $limit;
		if($start < 0) $start = 0;
		 
		$_usuario = false;
		$_etapa     = false;
		$_referencia = '';
		
		if ($dataFiltro != false) {
			  
			 $dataFiltro = explode('-', $dataFiltro);
			  
			 if ($dataFiltro[0] > 0) 
			         $_usuario = $dataFiltro[0];
			         
			 if (strlen($dataFiltro[1]) > 0)
			         $_referencia =  $dataFiltro[1];
			         
			 if ($dataFiltro[2] > 0) 
			         $_etapa = $dataFiltro[2];  
			  	  
		}

		header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
		header("Last-Modified: " . gmdate( "D, d M Y H:i:s" )."GMT");
		header("Cache-Control: no-cache, must-revalidate" );
		header("Pragma: no-" );
		
		$compania = $this->mcigestion->datosPendientes();
     	$records = $this->mcompania->loadCompaniasArrayByCi($compania,$_referencia,$start, $limit, $sortname, $sortorder);
     	
     	$totalRecords = count($records);

		$totalPages = ceil($totalRecords/$limit);
		     if ($page > $totalPages) $page = $totalPages;

		$json_output = array(
		                     'page'		  => $page,
		                     'total'      => $totalPages,
		                     'records'	  => $totalRecords,
		                     'rows'		  => array()
		                    );
		                    
		if($records != false)
		{
			foreach($records as $compania)
			{
				
				$servicio = $this->mservicios->LoadServicioById($compania->getIdServicio());
				
				//obtener ID de el urtimo prosseso o etapa de el registro
				$lastProsseso = $this->mprocesos->loadLastProceso($compania->getIdCompania());			
				$prosseso = $this->mprocesos->loadProcesoById($lastProsseso);
				
				//Etapa de el ultimo prosseso 
				$etapaP = $this->metapas->LoadEtapaById($prosseso->getIdEtapa()); 
				$diasProsseso = $this->chcalendario->calcularDias($prosseso->getFechaSys());
				
				if ($prosseso->getIdEtapa() ==  4)
			    	continue;
				
			    if ($_etapa != false) {
					
			    	if ($prosseso->getIdEtapa() != $_etapa)
			    	    continue;
				}
				
				if ($_usuario != false) {
					
					  if ($prosseso->getIdUsuario() != $_usuario)
					    continue;
				}
				
				 $validar = $this->mcigestion->LoadGestionValidar($compania->getIdCompania(), $prosseso->getIdEtapa());
				 
				 if ($validar != false)
				      continue;
				      
				//Usuario de el ultimo prosseso
				$usuario = $this->usuarios->LoadUsuarioById($prosseso->getIdUsuario());
				
				$smsSetup = $this->smssetupci->loadRegistro();
				$smsSetup = $smsSetup[0];
				
				//Dias en Lista Pendiente de Controlador Interno.
				$diasCi = $diasProsseso - $smsSetup->getEtapaDesde();
				
				if ($smsSetup->getEtapaDesde() > $diasProsseso){
				   continue;
				}
				
				$fecha = substr($prosseso->getFechaSys(), 0,10);
				$fecha = explode("-", $fecha);

				$arr = $json_output['rows'][] = array(
				                                      'IdCompania'           => $compania->getIdCompania(),
				                                      'NombreCompania'       => "<strong>".$compania->getNombreCompania()."</strong>",
				                                      'IdServicio'           => $servicio->getNombreServicio(),
				                                      'IdEtapa'              => $etapaP->GetNombre(),
				                                      'fechaEtapa'           => $fecha[1].'/'.$fecha[2].'/'.$fecha[0],
				                                      'diasEtapa'            => intval($diasProsseso),
				                                      'User'                 => $usuario->getNombreUsuario(),
				                                      'diasCI'               => intval($diasCi)
				                                     );
				
			}
		}
     	
    	$a=json_encode($json_output);
		$a=str_replace('\\','',$a);
		echo $a;
		
     }
    
}